<?php

namespace App\Api\Huajingtest;

use PhalApi\Api;
use PhalApi\Exception\BadRequestException;

/**
 * 华净测试盒子接口
 * @desc 用于记录测试盒子的数据
 */
class Box extends Api {

    public function getRules() {
        return array(
            'saveBoxInfo' => array(
                'url' => array('name' => 'url', 'require' => true, 'desc' => '链接地址'),
                'mac' => array('name' => 'mac', 'require' => true, 'desc' => 'MAC地址'),
            ),
        );
    }

    /**
     * 保存盒子信息
     * @desc 保存盒子的URL、MAC、IP等信息，以URL为唯一标识
     * @return array 保存结果
     * @exception 400 参数错误
     */
    public function saveBoxInfo() {
        // 设置跨域请求头
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
        header('Access-Control-Allow-Headers: *');

        // 获取参数
        $url = $this->url;
        $mac = $this->mac;
        $ip = $_SERVER['REMOTE_ADDR']; // 如果未传IP，则使用客户端IP

        // 检查URL是否已存在
        $existingRecord = \PhalApi\DI()->notorm->huajingtest_box
            ->where('url', $url)
            ->fetchOne();

        $data = array(
            'url' => $url,
            'mac' => $mac,
            'ip' => $ip,
            'update_time' => date('Y-m-d H:i:s'),
        );

        if ($existingRecord) {
            // 更新记录
            $result = \PhalApi\DI()->notorm->huajingtest_box
                ->where('id', $existingRecord['id'])
                ->update($data);
            
            \PhalApi\DI()->response->setMsg('更新成功');
            return $result;
        } else {
            // 新增记录
            $data['create_time'] = date('Y-m-d H:i:s');
            $result = \PhalApi\DI()->notorm->huajingtest_box->insert($data);
            
            \PhalApi\DI()->response->setMsg('添加成功');
            return $result;
        }
    }
}
